/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gui;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import model.*;

/**
 *
 * @author Benjamin De Clercq, Michiel Vancoillie, Ruben Slabbinck
 */
public class KeuzePaneel extends JPanel implements MouseListener {

    private final int BREEDTE = 3;
    private final int HOOGTE = 4;

    private KeuzeVak[][] vakken;
    private KeuzeVak geselecteerdKeuzeVak;
    private Boolean keuzeVakGeselecteerd;
    private int speler;
    private int gebied;

    public KeuzePaneel(int speler) {
        super();

        this.speler = speler;
        gebied = (speler==1 ? 4 : 6);
        setLayout(new GridLayout(HOOGTE, BREEDTE));
        setPreferredSize(new Dimension(250, 250));
        vakken = new KeuzeVak[HOOGTE][BREEDTE];
        for(int i=0; i<HOOGTE; i++) {
            for(int j=0; j<BREEDTE; j++) {
                if(i==0) {
                    if(j==0) {
                        vakken[i][j] = new KeuzeVak(new Pion(0, speler), Pion.VLAGGEN);
                    } else if(j==1) {
                        vakken[i][j] = new KeuzeVak(new Pion(1, speler), Pion.BOMMEN);
                    } else if(j==2) {
                        vakken[i][j] = new KeuzeVak(new Pion(2, speler), Pion.SPIONNEN);
                    }
                } else if(i==1) {
                    if(j==0) {
                        vakken[i][j] = new KeuzeVak(new Pion(3, speler), Pion.VERKENNERS);
                    } else if(j==1) {
                        vakken[i][j] = new KeuzeVak(new Pion(4, speler), Pion.MINEURS);
                    } else if(j==2) {
                        vakken[i][j] = new KeuzeVak(new Pion(5, speler), Pion.SERGEANTEN);
                    }
                } else if(i==2) {
                    if(j==0) {
                        vakken[i][j] = new KeuzeVak(new Pion(6, speler), Pion.LUITENANTEN);
                    } else if(j==1) {
                        vakken[i][j] = new KeuzeVak(new Pion(7, speler), Pion.KAPITEINEN);
                    } else if(j==2) {
                        vakken[i][j] = new KeuzeVak(new Pion(8, speler), Pion.MAJOREN);
                    }
                } else if(i==3) {
                    if(j==0) {
                        vakken[i][j] = new KeuzeVak(new Pion(9, speler), Pion.KOLONELLEN);
                    } else if(j==1) {
                        vakken[i][j] = new KeuzeVak(new Pion(10, speler), Pion.GENERALEN);
                    } else if(j==2) {
                        vakken[i][j] = new KeuzeVak(new Pion(11, speler), Pion.MAARSCHALKEN);
                    }
                }
                vakken[i][j].addMouseListener(this);
                add(vakken[i][j]);
            }
        }
        geselecteerdKeuzeVak = null;
        keuzeVakGeselecteerd = false;
    }

    public Boolean heeftKeuzeGemaakt() {
        return keuzeVakGeselecteerd;
    }

    public KeuzeVak geefKeuze() {
        return geselecteerdKeuzeVak;
    }

    public void overdrachtCompleet() {
        keuzeVakGeselecteerd = false;
        geselecteerdKeuzeVak = null;
    }

    public int aantalPionnenResterend() {
        int aantal = 0;
        for(int i=0; i<HOOGTE; i++) {
            for(int j=0; j<BREEDTE; j++) {
                aantal += vakken[i][j].getAantal();
            }
        }
        return aantal;
    }

    public void mousePressed(MouseEvent e) {
        if(!keuzeVakGeselecteerd) {
            if(((KeuzeVak)e.getSource()).getAantal() > 0) {
                geselecteerdKeuzeVak = (KeuzeVak)e.getSource();
                geselecteerdKeuzeVak.selecteer();
                keuzeVakGeselecteerd = true;
            }
        }
        else if(keuzeVakGeselecteerd) {
            if(((KeuzeVak)e.getSource()).equals(geselecteerdKeuzeVak)) {
                geselecteerdKeuzeVak.deselecteer();
                geselecteerdKeuzeVak = null;
                keuzeVakGeselecteerd = false;
            }
            else{
                if(((KeuzeVak)e.getSource()).getAantal()!=0){
                    geselecteerdKeuzeVak.deselecteer();
                    geselecteerdKeuzeVak = (KeuzeVak)e.getSource();
                    geselecteerdKeuzeVak.selecteer();
                }
                else{
                    geselecteerdKeuzeVak.deselecteer();
                    geselecteerdKeuzeVak = null;
                    keuzeVakGeselecteerd = false;
                }
            }
        }
    }

    public void mouseClicked(MouseEvent e) {}

    public void mouseReleased(MouseEvent e) {}

    public void mouseEntered(MouseEvent e) {}

    public void mouseExited(MouseEvent e) {}

    public void mouseDragged(MouseEvent e) {}

    public void mouseMoved(MouseEvent e) {}

    boolean controleerGebied(int x) {
        return (speler==1? x<4 : x>5);
    }

}
